package com.bjsxt.shopcenter.common.util;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * 加密的相关工具类
 * @author FanXiaokang
 *
 */
public class EncryptUtil
{

	/**
	 * 加密
	 * 密文：加密算法$随机数$加密（加密算法$随机数$明文）
	 */
	public static String encodeStr(String pass)
	{
		RegexUtil regexUtil = new RegexUtil();
		/*　加密*/
		String encType = "sha256";
		String randStr = regexUtil.proccedStr(32);
		/* 加密前置字符串(md5$abcd$)*/
		String encStr = encType+"$"+randStr+"$";
		/*加密前串md5$abcd$11111*/
		String encHead = encStr+pass;
		/*　明文加密*/
		String encBack = DigestUtils.sha256Hex(encHead);
		/* md5$abcd$md5(md5$abcd$111111)*/
		return encStr+encBack;
	}
	
	/**
	 * 比较两个密码是否一样,重新走一遍加密的流程,比较密文
	 * sha256$p112mh8nzb177odj79ew5ihoubr7r5zz$e70bb37e6caa0fc8b6106f7e343f8467e93e2868f4263ab65215238724094321
	 * 
	 * @param souPass	明文
	 * @param encPass	加密
	 * @return
	 */
	public static boolean checkPass(String souPass,String encPass)
	{
		String[] encPassEs = encPass.split("\\$");
		//System.out.println("数组:" + Arrays.toString(encPassEs));
				/* 加密前置字符串 (md5$abcd$)*/
		String encStr = encPassEs[0] + "$" + encPassEs[1] +"$";
		/* 加密前串md5$abcd$11111*/
		String encHead = encStr + souPass;
		/* 明文加密*/
		String encBack = DigestUtils.sha256Hex(encHead);
		
		encBack = encStr + encBack ; 
		return encBack.equals(encPass) ; 
	}
}
